package cn.iocoder.yudao.module.system.controller.admin.mini.goodInfo.dis.service.disgoods;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.mini.goodInfo.dis.controller.admin.disgoods.vo.DisGoodsCreateReqVO;
import cn.iocoder.yudao.module.system.controller.admin.mini.goodInfo.dis.controller.admin.disgoods.vo.DisGoodsExportReqVO;
import cn.iocoder.yudao.module.system.controller.admin.mini.goodInfo.dis.controller.admin.disgoods.vo.DisGoodsPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.mini.goodInfo.dis.controller.admin.disgoods.vo.DisGoodsUpdateReqVO;
import cn.iocoder.yudao.module.system.controller.admin.mini.goodInfo.dis.dal.dataobject.disgoods.DisGoodsDO;

/**
 * 折扣商品 Service 接口
 *
 * @author 芋道源码
 */
public interface DisGoodsService {

    /**
     * 创建折扣商品
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Integer createDisGoods(@Valid DisGoodsDO createReqVO);

    /**
     * 更新折扣商品
     *
     * @param updateReqVO 更新信息
     */
    void updateDisGoods(@Valid DisGoodsDO updateReqVO);

    /**
     * 删除折扣商品
     *
     * @param id 编号
     */
    void deleteDisGoods(Integer id);

    /**
     * 获得折扣商品
     *
     * @param id 编号
     * @return 折扣商品
     */
    DisGoodsDO getDisGoods(Integer id);

    /**
     * 获得折扣商品列表
     *
     * @param ids 编号
     * @return 折扣商品列表
     */
    List<DisGoodsDO> getDisGoodsList(Collection<Integer> ids);

    /**
     * 获得折扣商品分页
     *
     * @param pageReqVO 分页查询
     * @return 折扣商品分页
     */
    PageResult<DisGoodsDO> getDisGoodsPage(DisGoodsPageReqVO pageReqVO);

    /**
     * 获得折扣商品列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 折扣商品列表
     */
    List<DisGoodsDO> getDisGoodsList(DisGoodsExportReqVO exportReqVO);

}
